package com.dongzili.postgresql.custom.user.controller;

import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dongzili.postgresql.common.mybatisplus.MybatisPlusUtil;
import com.dongzili.postgresql.common.utils.BCryptUtils;
import com.dongzili.postgresql.common.vo.R;
import com.dongzili.postgresql.common.vo.ResponseCode;
import com.dongzili.postgresql.custom.user.entity.User;
import com.dongzili.postgresql.custom.user.entity.vo.LoginDto;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;

/**
 * @描述：
 * @作者： 96511
 * @日期： 2025-08-09 23:29
 */
@RestController
@RequestMapping("/auth")
public class AuthController {

    /**
     * 登录接口
     * @param loginDto
     * @return
     */
    @PostMapping("/login")
    public R<?> login(@RequestBody LoginDto loginDto){

        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getUsername,loginDto.getUsername());
        User user = MybatisPlusUtil.getMapper(User.class).selectOne(queryWrapper, false);
        if (user != null && BCryptUtils.checkByBCrypt(loginDto.getPassword(), user.getPassword())){
//            UserService.fillUser(user);
            StpUtil.login(user.getId());
            user.setPassword(null);
            StpUtil.getSession().set("user", user.toLoginUser());
            MybatisPlusUtil.getMapper(User.class).updateById((new User()).setId(user.getId()).setLastUpdateTime(LocalDateTime.now()));
            return R.success(user, StpUtil.getTokenInfo().tokenValue);
        }
        return R.error(ResponseCode.USERNAME_OR_PASSWORD_ERROR);
    }

    @GetMapping("/logout")
    public R<?> logout(){
        StpUtil.logout();
        return R.success();
    }



}
